package com.crm.service.before_sale;

import com.crm.pojo.*;
import com.crm.vo.CompetitorVO;
import com.crm.vo.OfferDetailsVO;
import com.crm.vo.PlanDetailsVO;
import com.crm.vo.Result;

import java.math.BigDecimal;
import java.util.List;

public interface CompetitorService {
    /**
     * 竞争对手列表
     *
     * @param curpage
     * @param rows
     * @return
     */
    public List<CompetitorVO> getCompetitorList(int curpage, int rows);

    /**
     * 获得竞争对手总数量
     *
     * @return
     */
    public Long getCompetitorExistTotal();

    /**
     * 删除竞争对手
     *
     * @param comId
     */
    public Result deleteCompetitor(Long comId);



    /**
     * 根据id查询销售机会名称
     *
     * @return
     */
    public List<String> findAllSaleChanceNameByChId(Long chId);

    /**
     * 查询客户姓名
     *
     * @return
     */
    public List<ClientInfo> findAllClientInfoName();

    /**
     * 查询销售机会主题名
     *
     * @return
     */
    public List<SaleChance> findAllSaleChanceName();

    /**
     * 添加竞争对手
     * @param comName
     * @param comPower
     * @param comProduct
     * @param comPrice
     * @param coping
     * @param remarks
     * @param chId
     * @param cid
     * @return
     */
    public Result addCompetitor(String comName,String comPower,String comProduct,BigDecimal comPrice,String coping,
                                String remarks,BigDecimal chId,BigDecimal cid);

    /**
     * 编辑竞争对手信息
     * @param competitor
     * @return
     */
    public Result editCompetitor(Competitor competitor);

    /**
     * 分页展示竞争对手列表
     * @param competitor
     * @param curpage
     * @param pagesize
     * @return
     */
    public List<Competitor> showCompetitorList(Competitor competitor,int curpage, int pagesize);

    /**
     * 获取竞争对手总数量
     * @param competitor
     * @return
     */
    public Long getCompetitorCount(Competitor competitor);


    //以下是客户视图需要的方法

    /**
     *根据客户编号查询销售机会
     * @param clientId
     * @return
     */
    public List<SaleChance> getSaleChanceListByClientId(Long clientId);

    /**
     *根据客户编号查询客户需求
     * @param clientId
     * @return
     */
    public List<ClientNeed> getClientNeedListByClientId(Long clientId);

    /**
     *根据客户编号查询解决方案
     * @param clientId
     * @return
     */
    public List<Scheme> getSchemeListByClientId(Long clientId);

    /**
     * 根据客户编号查询竞争对手
     * @param clientId
     * @return
     */
    public List<Competitor> getCompetitorListByClientId(Long clientId);

    /**
     * 根据客户编号查询计划及计划明细
     * @param clientId
     * @return
     */
    public List<PlanDetailsVO> getPlanDetailsVOListByClientId(Long clientId);

    /**
     * 根据客户编号查询报价及报价明细
     * @param clientId
     * @return
     */
    public List<OfferDetailsVO> getOfferDetailVOListByClientId(Long clientId);


}
